home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2001 January / Game.EXE_01_2001.iso / demos / Blade of Darkness / data1.cab / Program_Executable_Files / Lib / SaveGame.py < prev    next >
Encoding:
Text File  |  2000-11-16  |  10.0 KB  |  336 lines

  1. import MenuText
  2. import Bladex
  3. import netwidgets
  4. import MenuWidget
  5. import os
  6. import time
  7. import string
  8. import Reference
  9.  
  10. EMPTY_SLOT  = "<Empty Slot>"
  11. DATE_FORMAT = "%d/%m %H:%M"
  12. SaveCounter = []
  13.  
  14. for i in range(2):
  15.         SaveCounter.append("Awesome!")
  16.  
  17. for i in range(3):
  18.         SaveCounter.append("Heroic")
  19.  
  20. for i in range(4):
  21.         SaveCounter.append("Bold")
  22.  
  23. for i in range(5):
  24.         SaveCounter.append("Normal")
  25.  
  26. for i in range(6):
  27.         SaveCounter.append("Cautious")
  28.  
  29. for i in range(7):
  30.         SaveCounter.append("Overcautious")
  31.  
  32. SaveCounter.append("Lame")
  33. #
  34. # Utils to save/load games.
  35. #
  36.  
  37. def ElUsuarioPresionaLaTeclaEscape(Salio):
  38.     return 1
  39.  
  40.  
  41. def LoadGameAux(name):
  42.     import Language
  43.     import SaveGameImage
  44.  
  45.     path="../../Save/%s_files"%(name,)
  46.     execfile="execfile('../../Scripts/sys_init.py');execfile('../../Save/%s.py')"%(name,)
  47.  
  48.     file_data_aux=open("%s/%saux"%(path,"aux"),"rt")
  49.     text=file_data_aux.read()
  50.     print text
  51.     file_data_aux.close()
  52.     scr_name="../../Data/Menu/Save/"+Language.Current+"/Cerrando.jpg"
  53.     SaveGameImage.ShowImage(scr_name,0)
  54.     Bladex.BeginLoadGame()
  55.     Bladex.CloseLevel(execfile,text)
  56.     
  57. def LoadGameFromDisk(menu_class):
  58.     LoadGameAux("SaveGame"+menu_class.MenuDescr["Clave"])
  59.  
  60. def SaveGameToDisk(menu_class):
  61.     import Menu
  62.     import Scorer
  63.     import MenuText
  64.     import GameText
  65.  
  66.     global SaveGameString
  67.  
  68.     # Back to game
  69.     Menu._MainMenu.DeActivateMenuItem()
  70.     Menu._MainMenu.DeActivateMenuItem()
  71.     Menu._MainMenu.DeActivateMenuItem()
  72.     Menu._MainMenu.DeActivateMenuItem()
  73.     
  74.     
  75.     # save aditional data
  76.     file = open("../../Save/"+menu_class.MenuDescr["Clave"]+".sv","w")
  77.  
  78.     char = Bladex.GetEntity("Player1")
  79.     if char.Kind[0] =="K":
  80.         cad = MenuText.GetMenuText("Knight")
  81.     if char.Kind[0] =="B":
  82.         cad = MenuText.GetMenuText("Barbarian")
  83.     if char.Kind[0] =="D":
  84.         cad = MenuText.GetMenuText("Dwarf")
  85.     if char.Kind[0] =="A":
  86.         cad = MenuText.GetMenuText("Amazon")
  87.     
  88.     cadtime = time.strftime(DATE_FORMAT,time.localtime(time.time()))
  89.     
  90.     cad = `char.Level+1`+" Lv. "+cad+" "+" - "+cadtime+" - "
  91.     cad = cad + GameText.MapDescriptor(Bladex.GetCurrentMap())
  92.     Reference.TimesSaved = Reference.TimesSaved+1
  93.     if Reference.TimesSaved >= len(SaveCounter):
  94.         DisgustingMessage = SaveCounter[len(SaveCounter)-1]
  95.     else:
  96.         DisgustingMessage = SaveCounter[Reference.TimesSaved-1]
  97.     cad = cad + " - "+`Reference.TimesSaved`+" ("+MenuText.GetMenuText(DisgustingMessage)+")"
  98.     file.write(cad)    
  99.     file.close()
  100.     print cad
  101.  
  102.     # save Screen shoot
  103.     Scorer.SetVisible(0)
  104.     Bladex.SaveScreenShot('../../Save/'+menu_class.MenuDescr["Clave"]+'.BMP',160,120)
  105.     SaveGameString = "import GameState;state=GameState.WorldState();state.GetState();state.SaveState('../../Save/SaveGame"+menu_class.MenuDescr["Clave"]+".py');state=None;"
  106.  
  107.     # Save the game
  108.     Bladex.PauseSoundSystem()
  109.     Bladex.StopTime()
  110.     Bladex.SetRunString(SaveGameString+"Scorer.SetVisible(1);Bladex.RestartTime();Bladex.ResumeSoundSystem()")
  111.     
  112.  
  113. def GetBack(menu_class):
  114.     import Menu
  115.     Menu._MainMenu.DeActivateMenuItem()
  116.     
  117.  
  118. SaveBitmaps =     (
  119.             ("1"    , "../../Save/1.BMP"   ),
  120.             ("2"    , "../../Save/2.BMP"   ),
  121.             ("3"    , "../../Save/3.BMP"   ),
  122.             ("4"    , "../../Save/4.BMP"   ),
  123.             ("5"    , "../../Save/5.BMP"   ),
  124.             ("6"    , "../../Save/6.BMP"   ),
  125.             ("7"    , "../../Save/7.BMP"   ),
  126.             ("8"    , "../../Save/8.BMP"   ),
  127.         )
  128.  
  129. def GetSaveStatus():
  130.     global EmptyImage
  131.     if EmptyImage:
  132.         return "0"
  133.     elif FirstSaved:
  134.         return FirstSaved
  135.     else:
  136.         return "1"
  137.     
  138.  
  139. def FocusOnBitmap(menu_class=0,parametro=0):
  140.     netwidgets.ChangePlayer(menu_class.MenuDescr["Clave"])
  141.  
  142.  
  143. # called when the menu is called
  144. def CreateSaveMenu():
  145.     import Menu
  146.     import GameText
  147.     
  148.     InspectSaveList()
  149.     if AllEmpty and  not GameText.MapList.has_key(string.upper(Bladex.GetCurrentMap())):
  150.         try:
  151.             Menu.GetMenuItem    (['GAME','LOAD GAME'])['Kind'     ] = MenuWidget.B_MenuItemTextNoFXNoFocus
  152.         except:
  153.             pass
  154.         try:
  155.             del Menu.GetMenuItem(['GAME','LOAD GAME'])['ListDescr']
  156.         except:
  157.             pass
  158.     else:
  159.         try:
  160.             CreateMenu('LOAD GAME',0)
  161.         except:
  162.             pass
  163.         try:
  164.             del Menu.GetMenuItem    (['GAME','LOAD GAME'])['Kind'     ]
  165.         except:
  166.             pass
  167.     
  168.     if (Bladex.GetEntity("Player1").Life <= 0) or not GameText.MapList.has_key(string.upper(Bladex.GetCurrentMap())):
  169.         try:
  170.             Menu.GetMenuItem    (['GAME','SAVE GAME'])['Kind'     ] = MenuWidget.B_MenuItemTextNoFXNoFocus
  171.         except:
  172.             pass
  173.     else:
  174.         try:
  175.             del Menu.GetMenuItem    (['GAME','SAVE GAME'])['Kind'     ] 
  176.         except:
  177.             pass
  178.         try:
  179.             CreateMenu('SAVE GAME',1)
  180.         except:
  181.             pass
  182.     
  183. def InspectSaveList():
  184.     global SaveBitmaps
  185.     global AllEmpty
  186.     global FirstSaved
  187.     
  188.     FirstSaved = None
  189.     AllEmpty = 1
  190.      
  191.     SaveBitmaps = []
  192.     path = "../../Save/"
  193.     ListDir = os.listdir(path)
  194.     for i in range(6):
  195.         cad = `i+1`+".BMP"
  196.         if cad in ListDir:
  197.             file = open(path+`i+1`+".sv","r")
  198.             name = file.readline()
  199.             file.close()
  200.             
  201.             SaveBitmaps.append(`i+1`,path+cad,name)
  202.             AllEmpty = 0
  203.             if not FirstSaved:
  204.                 FirstSaved = `i+1`
  205.         else:
  206.             SaveBitmaps.append(`i+1`,"../../Data/Empty.BMP",EMPTY_SLOT)
  207.     SaveBitmaps.append("0","../../Data/Empty.BMP",EMPTY_SLOT)
  208.  
  209. def RestartLevel(menu_class):
  210.     Bladex.LoadLevel(Bladex.GetCurrentMap())
  211.  
  212. def MenuStart(EntityName):
  213.     import AuxFuncs
  214.     Bladex.GetEntity(EntityName).Freeze()
  215.     print EntityName, "is  death"
  216.     AuxFuncs.FadeTo(1.0,1.0)
  217.     Bladex.AddScheduledFunc(Bladex.GetTime()+1.0,ActivaMenuDeRegreso,())
  218.  
  219. def ActivaMenuDeRegreso():
  220.     import Menu
  221.     if Bladex.GetEntity("Player1").Life<=0:
  222.         Menu.GetMenuItem(["BACK TO GAME"])['Kind'     ] = MenuWidget.B_MenuItemTextNoFXNoFocus
  223.         Menu.EscapeFunction = ElUsuarioPresionaLaTeclaEscape
  224.  
  225.     Menu.ActivateMenu()
  226.     Menu._MainMenu.ActivateMenuItem()
  227.     Menu._MainMenu.MenuNextItem()
  228.     Menu._MainMenu.ActivateMenuItem()
  229.  
  230. def CreateMenu(MenuName,SaveFlag):
  231.     import Menu
  232.     import MenuText
  233.     import GameText
  234.     global EmptyImage
  235.         
  236.     menuItem = Menu.GetMenuItem(['GAME',MenuName])
  237.  
  238.     if menuItem == 1:
  239.         return
  240.  
  241.     Save_Menu = []
  242.     
  243.     EmptyImage = (not SaveFlag) and GameText.MapList.has_key(string.upper(Bladex.GetCurrentMap()))
  244.         
  245.     Save_Menu.append(  {"Name"    : MenuText.GetMenuText(MenuName),
  246.                         "VSep"    : 30,
  247.                         "Font"    : Menu.MenuFontBig,
  248.                         "Kind"    : MenuWidget.B_MenuItemTextNoFXNoFocus,
  249.                          })
  250.                          
  251.     Save_Menu.append(  {"Name":"GameList",
  252.                         "Kind":netwidgets.B_ImageListWidget,
  253.                         "ImageList":SaveBitmaps,
  254.                         "GetCharType":GetSaveStatus,
  255.                         "VSep":10
  256.                        })
  257.     
  258.     if EmptyImage:
  259.         Save_Menu.append(  {"Name"           : MenuText.GetMenuText("Restart")+' "'+GameText.MapDescriptor(Bladex.GetCurrentMap())+'"',
  260.                             "VSep"           : 10,
  261.                             "Clave"          : "0",
  262.                             "FocusCallBack"  : FocusOnBitmap,
  263.                             "Font"           : Menu.MenuFontMed,
  264.                             "Kind"           : MenuWidget.B_MenuItemTextNoFX,
  265.                             "Command"        : RestartLevel
  266.                              })
  267.         menuItem["iFocus"] =3
  268.     else:
  269.         if menuItem.has_key("iFocus"):
  270.           del menuItem["iFocus"]
  271.  
  272.     
  273.     ####################################
  274.     for i in range(6):
  275.         SaveGameName = SaveBitmaps[i][2]
  276.         if SaveFlag:
  277.             val =              {"Name"           : SaveGameName,
  278.                                 "VSep"           : 10,
  279.                                 "Font"           : Menu.MenuFontMed,
  280.                                 "FocusCallBack"  : FocusOnBitmap,
  281.                                 "Clave"          : `i+1`,
  282.                                 "iFocus"         : 2,
  283.                                 "ListDescr"      : [
  284.                                                     {"Name":MenuText.GetMenuText("Overwrite a previous saved game?"),
  285.                                                      "VSep":200,
  286.                                                      "Font":Menu.MenuFontBig,
  287.                                                      "Kind":MenuWidget.B_MenuItemTextNoFXNoFocus
  288.                                                     },
  289.                                                     {"Name"    : MenuText.GetMenuText("Yes"),
  290.                                                      "VSep"    : 20,
  291.                                                      "Command" : SaveGameToDisk,
  292.                                                      "Font"    : Menu.MenuFontMed,
  293.                                                      "Clave"   :  `i+1`,
  294.                                                     },
  295.                                                     {"Name":MenuText.GetMenuText("No"),
  296.                                                      "VSep":10,
  297.                                                      "Font":Menu.MenuFontMed,
  298.                                                      "Command" : GetBack
  299.                                                     },
  300.                                                     {"Name":"Back",
  301.                                                      "Kind":MenuWidget.B_BackBlank
  302.                                                     }
  303.                                                   ]
  304.                                  }
  305.             if SaveGameName == EMPTY_SLOT:
  306.                 del val["ListDescr"]
  307.                 val["Command"] = SaveGameToDisk
  308.             Save_Menu.append(val)
  309.         else:
  310.             val =              {"Name"           : SaveGameName,
  311.                                 "VSep"           : 10,
  312.                                 "Font"           : Menu.MenuFontMed,
  313.                                 "Kind"           : MenuWidget.B_MenuItemTextNoFX,
  314.                                 "Command"        : LoadGameFromDisk,
  315.                                 "FocusCallBack"  : FocusOnBitmap,
  316.                                 "Clave"          : `i+1`
  317.                                 }
  318.             if SaveGameName == EMPTY_SLOT:
  319.                 val["Kind"] = MenuWidget.B_MenuItemTextNoFXNoFocus
  320.             Save_Menu.append(val)
  321.                                  
  322.     ####################################
  323.                          
  324.     Save_Menu.append(   Menu.BackOption  )
  325.     Save_Menu.append(   {"Name":"Back",
  326.                          "Kind":MenuWidget.B_BackBlank
  327.                          })
  328.                                                   
  329.     menuItem["ListDescr"] = Save_Menu
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.